【仅内部】 MUSA SDK v5.0.0 发布版本信息
下载链接
发布说明
MUSA SDK v5.0.0 版本现已发布。此版本包含 mtcc20、TileLang 的内部体验版本,同时支持 MTX 指令集,欢迎内部同学试用。
此版本为内部体验版本,严禁对外提供。
测试平台
| 测试环境 | MTBIOS | CPU | OS | 内核版本 |
|---|---|---|---|---|
| Intel + Ubuntu22.04 + S5000 | 4.3.29 | Intel x86 platform | Ubuntu 22.04.x LTS x86_64 | 5.15.0-105-generic |
| Intel + Ubuntu22.04 + S4000 | 3.4.8 | Intel x86 platform | Ubuntu 22.04.x LTS x86_64 | 5.15.0-105-generic |
产品说明
摩尔线程 MUSA SDK 是一套完整的 GPU 并行计算开发环境,专为利用摩尔线程 GPU 加速程序而设计。通过 MUSA SDK,您能够轻松地利用 GPU 加速 各种应用,涵盖企业数据中心、桌面、工作站以及云平台和超级计算机等多个领域。该套件包括了 GPU 加速库、调试和优化工具、C/C++编译器以及用于应用程序部署的运行时库等功能。作为一套完整的开发工具,MUSA SDK 包含了以下主要组件:
- MUSA Toolkits,包含底层编译器、MUSA 运行时库、Musify 工具以及 MUSA-X 基础数学计算加速库
- muDNN,MT GPU 深度学习加速库
- MCCL,MT GPU 通信加速库
- MUSA SDK 依赖于摩尔线程 GPU 和摩尔线程 GPU 通用驱动程序,需要运行在带有摩尔线程 GPU 的服务器/工作站/PC 中,并安装了通用 Linux 驱动程序的环境中运行
- MT GPU:MTT S5000, MTT S4000,MTT S3000,MTT S80, MTT X300 等
- 通用驱动软件
另外 MUSA SDK 可配合摩尔线程提供的其他工具和软件提供更完整的 MUSA 计算功能
- GMI&MTML 工具,可提供显卡的管理监控功能并带有 C 函数接口
- 摩尔线程云原生套件,提供基于容器环境的 MUSA 计算并兼容 K8s 生态以及基于 RDMA 的 GPU 通信功能
功能描述
- 支持 SIMT(Single Instruction Multiple Thread,SIMT)架构并行编程模型
- 提供 MUSA 编程语言配套的编译器工具链 mcc,用于将 MUSA 应用程序源码编译为可以被 GPU 识别的可执行文件
- MUSA 驱动与运行时库,提供完整的基于 MT GPU 的 MUSA 运行环境
- 摩尔线程 MUSA 数学库提供了在 MT GPU 上优化过的数学函数库,包括
- 基础线性代数算子库 muBLAS(MUSA Basic Linear Algebra Subprograms)
- 快速傅里叶变换库 muFFT(MUSA Fast Fourier Transform)
- 基础性能元库 muPP (MUSA Performance Primitives)
- 随机数生成库 muRAND
- 稀疏矩阵运算库 muSPARSE
- 稀疏矩阵求解库 muSOLVER
- MCCL 通信,针对摩尔线程 GPU 和网络进行性能优化的多 GPU 和多节点通信基元。MCCL 提供了 all-gather、all-reduce、broadcast、reduce、reduce-scatter、point-to-point send 和 receive 等原语,这些原语均经过优化,可通过节点内的 PCIe 和 MTLink 高速互联以及节点间的 InfiniBand 网络实现高带宽和低延迟
- muDNN 库,针对深度学习领域和人工智能模型算法优化的函数库,提供高度优化的数学和数据处理任务的函数,包括张量运算,神经网络层计算,损失函数计算等
计算能力
计算能力(Compute Capability)用于表征计算系统(硬件+软件)所能够覆盖的功能,当前摩尔线程的计算能力包括:
| 计算能力 | 说明 |
|---|---|
| 1.0 | 基于苏堤芯片制造的计算卡+相关软件 |
| 2.1 | 基于春晓芯片制造的计算卡+相关软件 |
| 2.2 | 基于曲院芯片制造的计算卡+相关软件 |
| 3.1 | 新一代计算卡+相关软件 |
主要更新
功能更新(Feature Updates)
mcc
- CUDA 12.8 API 兼容率 90.2%
- 提供
__lsu_ld_cache_hint和__lsu_st_cache_hint接口控制访存 cache policy - 提供高精度
powf和sinf实现 - 提供 SL 寄存器优化和 LICM 优化等解决绝大部分 mutlass 寄存器溢出问题
- 修复若干 bug
mtx
-
离线 MTX 编译器
直接将 MTX 方言解析为 LLVM IR,并输出可用于 MTCC 的.so或可进一步经 llc 编译的 IR/ASM -
语言与语法支持
支持 MTX 指令 41 条,内置 MTX 语法预处理,--mtx模式下默认进行实现 bitcode 链接,生成可下游消费的完整 IR -
CLI 核心能力
--emit-llvm-only:仅产出 LLVM IR--emit-asm:产出汇编--output-dir:指定输出目录--arch:指定架构(默认 mp_31,可自定)--backend mtcc/comgr:指定后端--check-env:检查 LLVM 工具链
-
环境需求
需要 LLVM 15+ 的 llvm-link/llvm-dis;opt 可选 用于内联与优化。mtxas --check-env或scripts/check_llvm_env.sh可快速诊断路径与版本 -
已知限制
--ignore-errors不适用于 MTX- LLVM 14 及以下无法读取生成的 LLVM17 bitcode
--emit-llvm-only会在/tmp写入临时文件,需写权限- 缺少 opt 时跳过优化但仍可产出 IR/二进制
mtcc20 (Preview)
一款全新的基于 LLVM 20 的后端编译器。现有的 mtcc 目前基于 LLVM 14,但越来越多的需求指向 LLVM 20,因此进行了大版本升级。
- 可对接 MLIR 框架,如 Triton 和 XLA
- 目前仅发布 Preview 版本,所有用法与 mtcc 一致
- 仓库地址:https://sh-code.mthreads.com/sw/mtcc20x
MUSA Driver & Runtime
-
D2H 空泡优化
验证 D2H 空泡从 200us 下降到 10us 左右 -
动态库版本变更
MUSA Driver 动态库版本 so-name version 变更为 1,与 CUDA 对齐,实现多版本兼容 -
MUSA Graph 增强
支持 error dump 功能,支持 multi cmdbuffer 功能 -
MUSA LOG 功能增强
提供 MUSA API 出错时 call stack 打印功能,方便用户定位 -
CUDA 12.8 兼容性提升
API 兼容率从 75% 提升至 81.98% -
CUDA Sample
PASS 数量从 126 提升至 141 个 -
MUSA-Runtime 分支覆盖率
达到 63% -
Mupti 新增功能
支持 memory transfer 事件,支持 context 粒度的 pfm,支持muptiFinalize接口 -
fabric handle 接口
与 KMD 协同开发完成并合入 -
mudump 增强
支持打印 unmangled kernel name 的入参
Math-X
muBLAS
- muBLASLt matmul API 新增 FP8_E4M3/E5M2 混合精度输入,FP16/BF16 精度输出功能支持,及对应的 scale 和 StrideBatched 实现
- muBLAS 新增兼容 S/D/C/Z 四种精度的
matinv、geqrf、gels、getrf、getri、getrsBatchedAPI 共 24 个,对 CUDA 12.8 兼容达成 100%
muSOLVER
musolverDnSgeqrf: 增加int和int*两个类型的参数,对齐同类型 API 的签名musolverDnDgeqrf:同上musolverDnCgeqrf:同上musolverDnZgeqrf:同上musolverDnSgeqrf_bufferSize:增加musolverDnHandle_t、float*和const int三个类型的参数musolverDnDgeqrf_bufferSize:同上,指针类型为double*musolverDnCgeqrf_bufferSize:同上,指针类型为muComplex*musolverDnZgeqrf_bufferSize:同上,指针类型为muDoubleComplex*
muSPARSE
重构 SpSV 相关接口提高兼容性:
musparseSpSV_createDescrmusparseSpSV_destroyDescrmusparseSpSV_bufferSizemusparseSpSV_analysismusparseSpSV_solve
重构 SpMV 相关接口提高兼容性:
musparseSpMV_bufferSizemusparseSpMV
重构 ILU0 相关接口提高兼容性:
musparseScsrilu02_numericBoostmusparseDcsrilu02_numericBoostmusparseCcsrilu02_numericBoostmusparseZcsrilu02_numericBoostmusparseScsrilu02_analysismusparseDcsrilu02_analysismusparseCcsrilu02_analysismusparseZcsrilu02_analysismusparseScsrilu02musparseDcsrilu02musparseCcsrilu02musparseZcsrilu02musparseXcsrilu02_zeroPivotmusparseXcsrilu02_clear
muFFT
- 修复了某些 API 调用后驱动会误报无效设备序号(101)的问题
muPP
getHistogramEvenBufferSize的第三个参数类型由int*改为size_t*GetWaterBufferSize的第二个参数类型由int*改为size_t*muppiSegmentWatershedGetBufferSize_8u_C1R的第二个参数类型由int*改为size_t*muppiHistogramEvenGetBufferSize_8u_C1R_Ctx的第三个参数类型由int*改为size_t*muppiHistogramEvenGetBufferSize_8u_C1R的第三个参数类型由int*改为size_t*
muRAND
- 支持 host 端调用随机数生成器 mt19937
- 增加了 host 端接口对 host 指针的支持